package cn.wolfcode.shop;

import cn.wolfcode.shop.service.ICatalogService;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 定时任务
 */
@Component
public class ScheduledTask {
    @Reference
    private ICatalogService catalogService;

    /**
     * 定时发标检查 :
     * 问题:每一秒都操作数据库性能吃不消?
     * 解决方案: 把待发标的借款,查询出来,存储到内存中(使用ConcurrentLinkedQueue 存储结构),就只需要每秒从内存中检查发标
     *
     * 1.使用一个什么来做存储 : ConcurrentLinkedQueue
     * 2.什么时候查询到内存中ConcurrentLinkedQueue :
     *   1.后台执行发标审核,如果有一个待发标,就放进去ConcurrentLinkedQueue
     *   2.当应用启动的时候,需要把数据库中的待发标放入ConcurrentLinkedQueue
     *   3.专门搞一个定时器(每个1小时),定时的去查询数据库中有的待发标,而队列中没有的待发标,放入ConcurrentLinkedQueue
     *
     * 3.如何取?
     *   1.定时器没秒从队列中取出待发标,检查发标
     *     如果有执行发标:
     *       1.修改该标的状态为招标中(数据库)
     *       2.从队列中移除待标
     */




    //3.专门搞一个定时器(每个1小时),定时的去查询数据库中有的待发标,而队列中没有的待发标,放入ConcurrentLinkedQueue
    @Scheduled(cron = "*/5 * * * * ?")
    public void bidRequestPublishToQueue() {
        catalogService.catalogPropertyCountByCatalog();

    }

}